/********************************************************************** 
 * FILE		: AbstractXmlUtil.java					
 *			
 * AUTHOR   : kloyf		
 * 
 * DATE		: 2011-7-14
 * 									
 * REASON	: CREATE  
 *            							
 * VERSION  ：0.0.1
 *
 ***********************************************************************/
package com.common.util.xml;

import java.io.File;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

import com.common.util.BaseUtil;

/**
 * XML工具类的抽象类
 * 
 * @author kloyf
 * @version 0.0.1
 */
public abstract class AbstractXmlUtil extends BaseUtil {

	private static Document doc;
	/**
	 * 默认的root节点名。
	 */
	public final static String DEFULT_ROOT_NAME = "root";

	/**
	 * <pre>
	 * 根据文件路径读取xml文件。
	 * </pre>
	 * 
	 * @param filePath
	 *            文件 路径。
	 * @return Document 返回Document对象
	 */
	public static Document readXml(String filePath) {
		 SAXReader reader = new SAXReader();
		try {
			doc = reader.read(new File(filePath));
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return doc;
	}

	/**
	 * <pre>
	 * 根据输入流读取xml文件。
	 * </pre>
	 * 
	 * @param in
	 *            文件输入流
	 * 
	 * @return Document 返回Document对象
	 */
	public static Document readXml(InputStream in) {
		 SAXReader reader = new SAXReader();
		try {
			doc = reader.read(in);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return doc;
	}
	
	/**
	 * <pre>
	 * 根据字符输入流读取xml文件。
	 * </pre>
	 * 
	 * @param readerObj
	 *            Reader对象。字符输入流。
	 * 
	 * @return Document 返回Document对象
	 */
	public static Document readXml(Reader readerObj) {
		 SAXReader reader = new SAXReader();
		try {
			doc = reader.read(readerObj);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return doc;
	}

	/**
	 * <pre>
	 * 根据文件URL读取xml文件。
	 * </pre>
	 * 
	 * @param url
	 *            文件URL。
	 * @return Document 返回Document对象
	 */
	public static Document readXml(URL url) {
		 SAXReader reader = new SAXReader();
		try {
			doc = reader.read(url);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return doc;
	}
}
